package common.com.androidbase.datarequest;

import android.os.Parcel;
import android.os.Parcelable;

import com.android.sohu.sdk.common.toolbox.LogUtils;
import com.android.sohu.sdk.common.toolbox.StringUtils;

import java.util.ArrayList;
import java.util.List;

/**
 * 移植VideoDetailInfo
 *
 * @author kimwang
 */
public class VideoInfoModel implements Cloneable, Parcelable {

    private static final String TAG = VideoInfoModel.class.getSimpleName();

    /**
     * vid有几个级别：mp4、标清（流畅）、高清、超清、原画
     */
    private long vid;
    private int is_download;// 0不能下载，1可以下载
    private int ip_limit;// 0ip不受限，1受限
    private int mobileLimit;// 移动是否能播，0能播，1跳h5播
    private int video_length_type;// 0长视频 1短视频 ？
    private int video_type;// 老数据0、正片1、预告片2、幕后花絮3、制作特辑4、精彩片花5、其他周边6
    private String video_big_pic;
    private String ver_big_pic;
    private String hor_big_pic;
    private String ver_high_pic;
    private String hor_high_pic;
    private String small_pic;
    private String ver_small_pic;
    private String tip; // 图片提示，单视频是时长，多视频是更新到多少集
    private String video_desc;// 视频描述
    private String video_name;// 视频名字
    private String video_sub_name;// 视频副标题，综艺突出
    private String keyword;// h5用
    private String album_name;// 专辑名称
    private int is_original_code; // 是不是原画，0没有 1有
    private String url_html5;
    private int plevel;// //PGC&UGC视频加密级别(0、任何人可看 1、所有者的关注者可看 2、密码验证
                       // 3、仅限自己可看)(客户端没有1)
    private long cid;// 分类id
    private String cate_code;
    private String second_cate_name;
    private String year;// 年份
    private float score; // 评分
    private long play_count;// 播放数
    private String director;// 导演
    private String main_actor;// 主演
    private String area;// 地区
    private long area_id;
    private String livePic;// 直播图片（活动直播使用）
    private String liveDesc;// 直播的分享详情
    private int tvIsVr;// 是否为全景视频,0：非全景，1：全景，2：平铺
    private int vr_type;// 全景字段，0非全景，1全景
    private String vr_type_text;// "猜你喜欢"全景文案

    /**
     * 设一个默认值为0，因为服务器的部分短视频不向下发aid，
     * 而如果用vid去取视频详情却有可能取出aid(编辑推荐)，此时下载逻辑（aid和vid做主键）需要过滤掉aid=0时aid的作用
     */
    private long aid = 0;// 专辑id
    private String publish_time;
    private long video_order;// 该视频的集数
    private long latest_video_count;// 目前更新到了多少集
    private long total_video_count;// 总集数
    private String download_url;
    private long file_size_mobile;

    // 标清
    private long vid_nor;
    private String url_nor;
    private String url_nor_mp4;
    private long file_size_nor;
    private String clips_bytes_nor;
    private String clips_duration_nor;
    private long vid_nor_265;
    private String url_nor_265;// 标清 265版m3u8地址
    private long file_size_nor_265; // nor 265版文件大小
    // 高清
    private long vid_high;
    private String url_high;// 分享用 h5地址
    private String url_high_mp4;
    private long file_size_high;
    private String clips_bytes_high;
    private String clips_duration_high;
    private long vid_high_265;
    private String url_high_265; // 高清 265版m3u8地址
    private long file_size_high_265;
    // 超清
    private long vid_super;
    private String url_super;
    private String url_super_mp4;
    private long file_size_super;
    private String clips_bytes_super;
    private String clips_duration_super;
    private long vid_super_265;
    private String url_super_265; // 超清 265版m3u8地址
    private long file_size_super_265;
    // 原画
    private long vid_original;
    private String url_original;
    private String url_original_mp4;
    private long file_size_original;
    private String clips_bytes_original;
    private String clips_duration_original;
    private long vid_original_265;
    private String url_original_265; // 原画 265版m3u8地址
    private long file_size_original_265;

    private long vid_nor_NS; // 无字幕普清
    private String url_nor_NS; // 无字幕普清m3u8地址
    private long file_size_nor_NS; // 无字幕普清文件大小

    private long vid_high_NS; // 无字幕高清
    private String url_high_NS; // 无字幕高清m3u8地址
    private long file_size_high_NS; // 无字幕高清文件大小

    private long vid_super_NS; // 无字幕超清
    private String url_super_NS; // 无字幕超清m3u8地址
    private long file_size_super_NS; // 无字幕超清文件大小

    private long vid_original_NS; // 无字幕原画
    private String url_original_NS; // 无字幕原画m3u8地址
    private long file_size_original_NS; // 无字幕原画文件大小

    private long vid_nor_265_NS; // h265无字幕普清
    private String url_nor_265_NS; // h265无字幕普清m3u8地址
    private long file_size_nor_265_NS; // h265无字幕普清文件大小

    private long vid_high_265_NS; // h265无字幕高清
    private String url_high_265_NS; // h265无字幕高清m3u8地址
    private long file_size_high_265_NS; // h265无字幕高清文件大小

    private long vid_super_265_NS; // h265无字幕超清
    private String url_super_265_NS; // h265无字幕超清m3u8地址
    private long file_size_super_265_NS; // h265无字幕超清文件大小

    private long vid_original_265_NS; // h265无字幕原画
    private String url_original_265_NS; // h265无字幕原画m3u8地址
    private long file_size_original_265_NS; // h265无字幕原画文件大小

    private String caption_eng; // 英文字幕
    private String caption_chs_eng; // 中英文字幕

    private float total_duration;// 视频时长，秒
    private int time_length;// 视频时长，秒,某些接口(世界杯频道下)没有total_duration,使用的是time_length
    private int start_time;// 片头时刻
    private int end_time;// 片尾时刻
    private String period; // 期数
    private String first_name; // 相关推荐中与video_first_name相同意义的一个字段，由于ios端已在用，服务器端更改来不及，只好增加一个冗余字段
    private String video_first_name;
    private String video_short_name;
    private String show_date;
    private int site; // 网站来源1:sohu_vrs2:sohu_ugc
    private List<EP> ep; // 看点信息
    private int isai;

    private AlbumInfoModel albumInfo; // 目前视频属于某一专辑，该变量可能为空

    private long program_id;// 节目id
    private String program_name;// 节目名称

    private long priority;
    private long status;
    private int is_album;
    private String album_sub_name;
    private String label;
    private String tv_desc;

    private int play_time; // 本地维护，记录该视频播放了多长时间了

    private String album_english_name;
    private String season;
    private int has_followed;
    private String tv_name;
    private ActionProtocol action_protocol; // 用于首页焦点图等带action的地方

    private int is_trailer;
    private long tv_id;

    // 关注的美剧补充
    private int is_complete;
    private String last_watch_time;
    private int push_status;
    private int show_status;
    private String sort;
    private String title;
    private String uid;

    // 热点补充
    private int position;// positon起点从10000开始，前面的是0--9999,后面的是10000--
    private long columnId;

    // 活动action
    private String action_url;

    // please do not use this field, replaced by aid.
    @Deprecated
    private long sid; // 5025032,

    private String channeled;

    private int videoLevel;// 用于下载的记录清晰度
    private boolean isIgnoreFirstItem;// 用于是否添加到短视频详情页的第一条数据

    private int shortVideoType;// 0:短视频样式 1：间隔栏样式
    private String day;// 方便美剧排片表统计使用

    private String recommend_reason;

    private long timestamp = 0;// 获取时的时间戳，用于防盗链使用,readOnly
    private String album_desc;

    // 搜索补充
    private ArrayList<String> high_light;

    // 竖小图 240 X 330
    private String ver_common_pic;
    // 横小图 320 X 180
    private String hor_common_pic;
    // 16:9的图片 240 X 135
    private String hor_w6_pic;
    // 16:9的图片 640 X 360
    private String hor_w16_pic;
    // 竖大图 480 X 660
    private String ver_w12_pic;
    /**
     * 此为服务器返回的data_type，为了兼容升级。表示返回结果类型，具体含义参考http://mwiki.sohuno.com/pages/
     * viewpage.action?pageId=12456047 使用ListResourcesDataType类判断
     */
    private int data_type;
    private int origin_album_id;

    private String album_hor_high_pic;// 大
    private String album_hor_big_pic;// 中
    private String album_hor_small_pic;// 小

    // 表示当前点击的推荐专辑的位置
    private int correlation_num = -1;

    private boolean prevue;// 标识是否为预先先

    private String hor_w8_pic;// 三级结构补充图片

    private int is_advert;// 热点流中的视频是否广告视频

    private String show_name; // 相关推荐使用名称

    private long create_date;

    private int is_act;

    private boolean shouldLoadHistory = true;

    /**
     * 责任编辑编号
     */
    private String publish_user_code;

    /**
     * 责任编辑姓名
     */
    private String publish_user_name;

    /**
     * 视频长度
     */
    private String video_time_length;

    /*
     * 视频是否有效（应该是 是否有版权）
     */
    private boolean valid = true;

    /**
     * 搜索外网源标识
     */
    private String whole_source;

    /**
     * gif图片字段
     */
    private String gif_pic;

    /**
     * 工作室 或者用户信息
     */
    private PgcAccountInfoModel user;

    public PgcAccountInfoModel getUser() {
        return user;
    }

    public void setUser(PgcAccountInfoModel user) {
        this.user = user;
    }

    public boolean isValid() {
        return valid;
    }

    public void setValid(boolean valid) {
        this.valid = valid;
    }

    public boolean isShouldLoadHistory() {
        return shouldLoadHistory;
    }

    public void setShouldLoadHistory(boolean shouldLoadHistory) {
        this.shouldLoadHistory = shouldLoadHistory;
    }

    public VideoInfoModel() {
        timestamp = System.currentTimeMillis();
    }

    public int getVideoLevel() {
        return videoLevel;
    }

    public void setVideoLevel(int videoLevel) {
        this.videoLevel = videoLevel;
    }

    public long getVid() {
        return vid;
    }

    public void setVid(long vid) {
        this.vid = vid;
    }

    public int getIsai() {
        return isai;
    }

    public void setIsai(int isai) {
        this.isai = isai;
    }

    public int getIs_download() {
        return is_download;
    }

    public void setIs_download(int is_download) {
        this.is_download = is_download;
    }

    public int getIp_limit() {
        return ip_limit;
    }

    public void setIp_limit(int ip_limit) {
        this.ip_limit = ip_limit;
    }

    public int getMobile_limit() {
        return mobileLimit;
    }

    public void setMobile_limit(int mobile_limit) {
        this.mobileLimit = mobile_limit;
    }

    public int getVideo_length_type() {
        return video_length_type;
    }

    public void setVideo_length_type(int video_length_type) {
        this.video_length_type = video_length_type;
    }

    public int getVideo_type() {
        return video_type;
    }

    public void setVideo_type(int video_type) {
        this.video_type = video_type;
    }

    public String getVideo_big_pic() {
        return video_big_pic;
    }

    public void setVideo_big_pic(String video_big_pic) {
        this.video_big_pic = video_big_pic;
    }

    public String getVer_big_pic() {
        return ver_big_pic;
    }

    public void setVer_big_pic(String ver_big_pic) {
        this.ver_big_pic = ver_big_pic;
    }

    public String getHor_big_pic() {
        return hor_big_pic;
    }

    public void setHor_big_pic(String hor_big_pic) {
        this.hor_big_pic = hor_big_pic;
    }

    public String getVer_high_pic() {
        return ver_high_pic;
    }

    public void setVer_high_pic(String ver_high_pic) {
        this.ver_high_pic = ver_high_pic;
    }

    public String getHor_high_pic() {
        return hor_high_pic;
    }

    public void setHor_high_pic(String hor_high_pic) {
        this.hor_high_pic = hor_high_pic;
    }

    public String getTip() {
        return tip;
    }

    public void setTip(String tip) {
        this.tip = tip;
    }

    public String getVideo_desc() {
        return video_desc;
    }

    public void setVideo_desc(String video_desc) {
        this.video_desc = video_desc;
    }

    public void setVideo_name(String video_name) {
        this.video_name = video_name;
    }

    public String getVideo_name() {
        return video_name;
    }

    public String getVideo_sub_name() {
        return video_sub_name;
    }

    public void setVideo_sub_name(String video_sub_name) {
        this.video_sub_name = video_sub_name;
    }

    public String getKeyword() {
        return keyword;
    }

    public void setKeyword(String keyword) {
        this.keyword = keyword;
    }

    public String getAlbum_name() {
        return album_name;
    }

    public void setAlbum_name(String album_name) {
        this.album_name = album_name;
    }

    public int getIs_original_code() {
        return is_original_code;
    }

    public void setIs_original_code(int is_original_code) {
        this.is_original_code = is_original_code;
    }

    public String getUrl_html5() {
        return url_html5;
    }

    public void setUrl_html5(String url_html5) {
        this.url_html5 = url_html5;
    }

    public int getPlevel() {
        return plevel;
    }

    /**是否为加密视频*/
    public boolean isEncryptVideo() {
        return plevel == 2;
    }

    /**是否为自己的视频*/
    public boolean isOwnVideo() {
        return plevel == 3;
    }

    public void setPlevel(int plevel) {
        this.plevel = plevel;
    }

    public long getCid() {
        return cid;
    }

    public void setCid(long cid) {
        this.cid = cid;
    }

    public String getCate_code() {
        return cate_code;
    }

    public void setCate_code(String cate_code) {
        this.cate_code = cate_code;
    }

    public String getSecond_cate_name() {
        return second_cate_name;
    }

    public void setSecond_cate_name(String second_cate_name) {
        this.second_cate_name = second_cate_name;
    }

    public String getYear() {
        return year;
    }

    public void setYear(String year) {
        this.year = year;
    }

    public float getScore() {
        return score;
    }

    public void setScore(float score) {
        this.score = score;
    }

    public long getPlay_count() {
        return play_count;
    }

    public void setPlay_count(long play_count) {
        this.play_count = play_count;
    }

    public String getDirector() {
        return director;
    }

    public void setDirector(String director) {
        this.director = director;
    }

    public String getMain_actor() {
        return main_actor;
    }

    public void setMain_actor(String main_actor) {
        this.main_actor = main_actor;
    }

    public String getArea() {
        return area;
    }

    public void setArea(String area) {
        this.area = area;
    }

    /**
     * @return the actionUrl
     */
    public String getActionUrl() {
        return action_url;
    }

    /**
     * @param actionUrl
     *            the actionUrl to set
     */
    public void setActionUrl(String actionUrl) {
        this.action_url = actionUrl;
    }

    public long getAid() {
        if (IDTools.isEmpty(aid)) {
            return sid;
        }
        return aid;
    }

    public void setAid(long aid) {
        this.aid = aid;
    }

    public String getPublish_time() {
        return publish_time;
    }

    public void setPublish_time(String publish_time) {
        this.publish_time = publish_time;
    }

    public long getVideo_order() {
        return video_order;
    }

    public void setVideo_order(long video_order) {
        this.video_order = video_order;
    }

    public long getLatest_video_count() {
        return latest_video_count;
    }

    public void setLatest_video_count(long latest_video_count) {
        this.latest_video_count = latest_video_count;
    }

    public long getTotal_video_count() {
        return total_video_count;
    }

    public void setTotal_video_count(long total_video_count) {
        this.total_video_count = total_video_count;
    }

    public String getDownload_url() {
        return download_url;
    }

    public void setDownload_url(String download_url) {
        this.download_url = download_url;
    }

    public long getFile_size_mobile() {
        return file_size_mobile;
    }

    public void setFile_size_mobile(long file_size_mobile) {
        this.file_size_mobile = file_size_mobile;
    }

    public long getVid_nor() {
        return vid_nor;
    }

    public void setVid_nor(long vid_nor) {
        this.vid_nor = vid_nor;
    }

    public String getUrl_nor() {
        return url_nor;
    }

    public void setUrl_nor(String url_nor) {
        this.url_nor = url_nor;
    }

    public long getFile_size_nor() {
        return file_size_nor;
    }

    public void setFile_size_nor(long file_size_nor) {
        this.file_size_nor = file_size_nor;
    }

    public long getVid_high() {
        return vid_high;
    }

    public void setVid_high(long vid_high) {
        this.vid_high = vid_high;
    }

    public String getUrl_high() {
        return url_high;
    }

    public void setUrl_high(String url_high) {
        this.url_high = url_high;
    }

    public long getFile_size_high() {
        return file_size_high;
    }

    public void setFile_size_high(long file_size_high) {
        this.file_size_high = file_size_high;
    }

    public long getVid_super() {
        return vid_super;
    }

    public void setVid_super(long vid_super) {
        this.vid_super = vid_super;
    }

    public String getUrl_super() {
        return url_super;
    }

    public void setUrl_super(String url_super) {
        this.url_super = url_super;
    }

    public long getFile_size_super() {
        return file_size_super;
    }

    public void setFile_size_super(long file_size_super) {
        this.file_size_super = file_size_super;
    }

    public String getCaption_chs_eng() {
        return caption_chs_eng;
    }

    public void setCaption_chs_eng(String caption_chs_eng) {
        this.caption_chs_eng = caption_chs_eng;
    }

    public long getVid_nor_NS() {
        return vid_nor_NS;
    }

    public void setVid_nor_NS(long vid_nor_NS) {
        this.vid_nor_NS = vid_nor_NS;
    }

    public String getUrl_nor_NS() {
        return url_nor_NS;
    }

    public void setUrl_nor_NS(String url_nor_NS) {
        this.url_nor_NS = url_nor_NS;
    }

    public long getFile_size_nor_NS() {
        return file_size_nor_NS;
    }

    public void setFile_size_nor_NS(long file_size_nor_NS) {
        this.file_size_nor_NS = file_size_nor_NS;
    }

    public long getVid_high_NS() {
        return vid_high_NS;
    }

    public void setVid_high_NS(long vid_high_NS) {
        this.vid_high_NS = vid_high_NS;
    }

    public String getUrl_high_NS() {
        return url_high_NS;
    }

    public void setUrl_high_NS(String url_high_NS) {
        this.url_high_NS = url_high_NS;
    }

    public long getFile_size_high_NS() {
        return file_size_high_NS;
    }

    public void setFile_size_high_NS(long file_size_high_NS) {
        this.file_size_high_NS = file_size_high_NS;
    }

    public long getVid_super_NS() {
        return vid_super_NS;
    }

    public void setVid_super_NS(long vid_super_NS) {
        this.vid_super_NS = vid_super_NS;
    }

    public String getUrl_super_NS() {
        return url_super_NS;
    }

    public void setUrl_super_NS(String url_super_NS) {
        this.url_super_NS = url_super_NS;
    }

    public long getFile_size_super_NS() {
        return file_size_super_NS;
    }

    public void setFile_size_super_NS(long file_size_super_NS) {
        this.file_size_super_NS = file_size_super_NS;
    }

    public long getVid_original_NS() {
        return vid_original_NS;
    }

    public void setVid_original_NS(long vid_original_NS) {
        this.vid_original_NS = vid_original_NS;
    }

    public String getUrl_original_NS() {
        return url_original_NS;
    }

    public void setUrl_original_NS(String url_original_NS) {
        this.url_original_NS = url_original_NS;
    }

    public long getFile_size_original_NS() {
        return file_size_original_NS;
    }

    public void setFile_size_original_NS(long file_size_original_NS) {
        this.file_size_original_NS = file_size_original_NS;
    }

    public long getVid_nor_265_NS() {
        return vid_nor_265_NS;
    }

    public void setVid_nor_265_NS(long vid_nor_265_NS) {
        this.vid_nor_265_NS = vid_nor_265_NS;
    }

    public String getUrl_nor_265_NS() {
        return url_nor_265_NS;
    }

    public void setUrl_nor_265_NS(String url_nor_265_NS) {
        this.url_nor_265_NS = url_nor_265_NS;
    }

    public long getFile_size_nor_265_NS() {
        return file_size_nor_265_NS;
    }

    public void setFile_size_nor_265_NS(long file_size_nor_265_NS) {
        this.file_size_nor_265_NS = file_size_nor_265_NS;
    }

    public long getVid_high_265_NS() {
        return vid_high_265_NS;
    }

    public void setVid_high_265_NS(long vid_high_265_NS) {
        this.vid_high_265_NS = vid_high_265_NS;
    }

    public String getUrl_high_265_NS() {
        return url_high_265_NS;
    }

    public void setUrl_high_265_NS(String url_high_265_NS) {
        this.url_high_265_NS = url_high_265_NS;
    }

    public long getFile_size_high_265_NS() {
        return file_size_high_265_NS;
    }

    public void setFile_size_high_265_NS(long file_size_high_265_NS) {
        this.file_size_high_265_NS = file_size_high_265_NS;
    }

    public long getVid_super_265_NS() {
        return vid_super_265_NS;
    }

    public void setVid_super_265_NS(long vid_super_265_NS) {
        this.vid_super_265_NS = vid_super_265_NS;
    }

    public String getUrl_super_265_NS() {
        return url_super_265_NS;
    }

    public void setUrl_super_265_NS(String url_super_265_NS) {
        this.url_super_265_NS = url_super_265_NS;
    }

    public long getFile_size_super_265_NS() {
        return file_size_super_265_NS;
    }

    public void setFile_size_super_265_NS(long file_size_super_265_NS) {
        this.file_size_super_265_NS = file_size_super_265_NS;
    }

    public long getVid_original_265_NS() {
        return vid_original_265_NS;
    }

    public void setVid_original_265_NS(long vid_original_265_NS) {
        this.vid_original_265_NS = vid_original_265_NS;
    }

    public String getUrl_original_265_NS() {
        return url_original_265_NS;
    }

    public void setUrl_original_265_NS(String url_original_265_NS) {
        this.url_original_265_NS = url_original_265_NS;
    }

    public long getFile_size_original_265_NS() {
        return file_size_original_265_NS;
    }

    public void setFile_size_original_265_NS(long file_size_original_265_NS) {
        this.file_size_original_265_NS = file_size_original_265_NS;
    }

    public String getCaption_eng() {
        return caption_eng;
    }

    public void setCaption_eng(String caption_eng) {
        this.caption_eng = caption_eng;
    }

    public float getTotal_duration() {
        // 星尚频道下，视频列表使用的是搜索接口，没有total_duration，只有time_length，查看BUG-4439
        if (total_duration == 0.0f && time_length != 0) {
            return time_length;
        }
        return total_duration;
    }

    public void setTotal_duration(float total_duration) {
        this.total_duration = total_duration;
    }

    public int getTime_length() {
        return time_length;
    }

    public void setTime_length(int time_length) {
        this.time_length = time_length;
    }

    public int getSite() {
        return site;
    }

    public void setSite(int site) {
        this.site = site;
    }

    public List<EP> getEp() {
        return ep;
    }

    public void setEp(List<EP> ep) {
        this.ep = ep;
    }

    public int getStart_time() {
        return start_time;
    }

    public void setStart_time(int start_time) {
        this.start_time = start_time;
    }

    public int getEnd_time() {
        return end_time;
    }

    public void setEnd_time(int end_time) {
        this.end_time = end_time;
    }

    public String getPeriod() {
        return period;
    }

    public void setPeriod(String period) {
        this.period = period;
    }

    public String getSmall_pic() {
        return small_pic;
    }

    public void setSmall_pic(String small_pic) {
        this.small_pic = small_pic;
    }

    public String getVer_small_pic() {
        return ver_small_pic;
    }

    public void setVer_small_pic(String ver_small_pic) {
        this.ver_small_pic = ver_small_pic;
    }

    public String getUrl_nor_mp4() {
        return url_nor_mp4;
    }

    public void setUrl_nor_mp4(String url_nor_mp4) {
        this.url_nor_mp4 = url_nor_mp4;
    }

    public String getClips_bytes_nor() {
        return clips_bytes_nor;
    }

    public void setClips_bytes_nor(String clips_bytes_nor) {
        this.clips_bytes_nor = clips_bytes_nor;
    }

    public String getClips_duration_nor() {
        return clips_duration_nor;
    }

    public void setClips_duration_nor(String clips_duration_nor) {
        this.clips_duration_nor = clips_duration_nor;
    }

    public String getUrl_high_mp4() {
        return url_high_mp4;
    }

    public void setUrl_high_mp4(String url_high_mp4) {
        this.url_high_mp4 = url_high_mp4;
    }

    public String getClips_bytes_high() {
        return clips_bytes_high;
    }

    public void setClips_bytes_high(String clips_bytes_high) {
        this.clips_bytes_high = clips_bytes_high;
    }

    public String getClips_duration_high() {
        return clips_duration_high;
    }

    public void setClips_duration_high(String clips_duration_high) {
        this.clips_duration_high = clips_duration_high;
    }

    public String getUrl_super_mp4() {
        return url_super_mp4;
    }

    public void setUrl_super_mp4(String url_super_mp4) {
        this.url_super_mp4 = url_super_mp4;
    }

    public String getClips_bytes_super() {
        return clips_bytes_super;
    }

    public void setClips_bytes_super(String clips_bytes_super) {
        this.clips_bytes_super = clips_bytes_super;
    }

    public String getClips_duration_super() {
        return clips_duration_super;
    }

    public void setClips_duration_super(String clips_duration_super) {
        this.clips_duration_super = clips_duration_super;
    }

    public long getVid_original() {
        return vid_original;
    }

    public void setVid_original(long vid_original) {
        this.vid_original = vid_original;
    }

    public String getUrl_original() {
        return url_original;
    }

    public void setUrl_original(String url_original) {
        this.url_original = url_original;
    }

    public String getUrl_original_mp4() {
        return url_original_mp4;
    }

    public void setUrl_original_mp4(String url_original_mp4) {
        this.url_original_mp4 = url_original_mp4;
    }

    public long getFile_size_original() {
        return file_size_original;
    }

    public void setFile_size_original(long file_size_original) {
        this.file_size_original = file_size_original;
    }

    public String getClips_bytes_original() {
        return clips_bytes_original;
    }

    public void setClips_bytes_original(String clips_bytes_original) {
        this.clips_bytes_original = clips_bytes_original;
    }

    public String getClips_duration_original() {
        return clips_duration_original;
    }

    public void setClips_duration_original(String clips_duration_original) {
        this.clips_duration_original = clips_duration_original;
    }

    public void setVideo_first_name(String video_first_name) {
        this.video_first_name = video_first_name;
    }

    public String getVideo_short_name() {
        return video_short_name;
    }

    public void setVideo_short_name(String video_short_name) {
        this.video_short_name = video_short_name;
    }

    public String getShow_date() {
        return show_date;
    }

    public void setShow_date(String showDate) {
        this.show_date = showDate;
    }

    public AlbumInfoModel getAlbumInfo() {
        return albumInfo;
    }

    public void setAlbumInfo(AlbumInfoModel albumInfo) {
        this.albumInfo = albumInfo;
    }

    public long getProgram_id() {
        return program_id;
    }

    public void setProgram_id(long program_id) {
        this.program_id = program_id;
    }

    public String getProgram_name() {
        return program_name;
    }

    public void setProgram_name(String program_name) {
        this.program_name = program_name;
    }

    /**
     * @return the priority
     */
    public long getPriority() {
        return priority;
    }

    /**
     * @param priority
     *            the priority to set
     */
    public void setPriority(long priority) {
        this.priority = priority;
    }

    /**
     * @return the status
     */
    public long getStatus() {
        return status;
    }

    /**
     * @param status
     *            the status to set
     */
    public void setStatus(long status) {
        this.status = status;
    }

    /**
     * @return the is_album
     */
    public int getIs_album() {
        return is_album;
    }

    /**
     * @param is_album
     *            the is_album to set
     */
    public void setIs_album(int is_album) {
        this.is_album = is_album;
    }

    /**
     * @return the album_sub_name
     */
    public String getAlbum_sub_name() {
        return album_sub_name;
    }

    /**
     * @param album_sub_name
     *            the album_sub_name to set
     */
    public void setAlbum_sub_name(String album_sub_name) {
        this.album_sub_name = album_sub_name;
    }

    /**
     * @return the label
     */
    public String getLabel() {
        return label;
    }

    /**
     * @param label
     *            the label to set
     */
    public void setLabel(String label) {
        this.label = label;
    }

    /**
     * @return the tv_desc
     */
    public String getTv_desc() {
        return tv_desc;
    }

    /**
     * @param tv_desc
     *            the tv_desc to set
     */
    public void setTv_desc(String tv_desc) {
        this.tv_desc = tv_desc;
    }

    public int getPlay_time() {
        return play_time;
    }

    public void setPlay_time(int play_time) {
        this.play_time = play_time;
    }

    /**
     * @return the album_english_name
     */
    public String getAlbum_english_name() {
        return album_english_name;
    }

    /**
     * @param album_english_name
     *            the album_english_name to set
     */
    public void setAlbum_english_name(String album_english_name) {
        this.album_english_name = album_english_name;
    }

    /**
     * @return the season
     */
    public String getSeason() {
        return season;
    }

    /**
     * @param season
     *            the season to set
     */
    public void setSeason(String season) {
        this.season = season;
    }

    /**
     * @return the has_followed
     */
    public int getHas_followed() {
        return has_followed;
    }

    /**
     * @param has_followed
     *            the has_followed to set
     */
    public void setHas_followed(int has_followed) {
        this.has_followed = has_followed;
    }

    /**
     * @return the tv_name
     */
    public String getTv_name() {
        return tv_name;
    }

    public long getCreate_date() {
        return create_date;
    }

    public void setCreate_date(long create_date) {
        this.create_date = create_date;
    }

    public int getIs_act() {
        return is_act;
    }

    public void setIs_act(int is_act) {
        this.is_act = is_act;
    }

    /**
     * @param tv_name
     *            the tv_name to set
     */
    public void setTv_name(String tv_name) {
        this.tv_name = tv_name;
    }

    public boolean isTrailer() {
        return is_trailer == 1;
    }

    public void setTrailer(boolean isTrailer) {
        if (isTrailer) {
            is_trailer = 1;
        } else {
            is_trailer = 0;
        }
    }

    public long getTv_id() {
        return tv_id;
    }

    public void setTv_id(long tv_id) {
        this.tv_id = tv_id;
    }

    public long getArea_id() {
        return area_id;
    }

    public void setArea_id(long area_id) {
        this.area_id = area_id;
    }

    public String getLivePic() {
        return livePic;
    }

    public void setLivePic(String livePic) {
        this.livePic = livePic;
    }

    public String getLiveDesc() {
        return liveDesc;
    }

    public void setLiveDesc(String liveDesc) {
        this.liveDesc = liveDesc;
    }

    /**
     * @return the mobileLimit
     */
    public int getMobileLimit() {
        return mobileLimit;
    }

    /**
     * @param mobileLimit
     *            the mobileLimit to set
     */
    public void setMobileLimit(int mobileLimit) {
        this.mobileLimit = mobileLimit;
    }

    /**
     * @return the is_complete
     */
    public int getIs_complete() {
        return is_complete;
    }

    /**
     * @param is_complete
     *            the is_complete to set
     */
    public void setIs_complete(int is_complete) {
        this.is_complete = is_complete;
    }

    /**
     * @return the last_watch_time
     */
    public String getLast_watch_time() {
        return last_watch_time;
    }

    /**
     * @param last_watch_time
     *            the last_watch_time to set
     */
    public void setLast_watch_time(String last_watch_time) {
        this.last_watch_time = last_watch_time;
    }

    /**
     * @return the push_status
     */
    public int getPush_status() {
        return push_status;
    }

    /**
     * @param push_status
     *            the push_status to set
     */
    public void setPush_status(int push_status) {
        this.push_status = push_status;
    }

    /**
     * @return the show_status
     */
    public int getShow_status() {
        return show_status;
    }

    /**
     * @param show_status
     *            the show_status to set
     */
    public void setShow_status(int show_status) {
        this.show_status = show_status;
    }

    /**
     * @return the sort
     */
    public String getSort() {
        return sort;
    }

    /**
     * @param sort
     *            the sort to set
     */
    public void setSort(String sort) {
        this.sort = sort;
    }

    /**
     * @return the title
     */
    public String getTitle() {
        return title;
    }

    /**
     * @param title
     *            the title to set
     */
    public void setTitle(String title) {
        this.title = title;
    }

    /**
     * @return the uid
     */
    public String getUid() {
        return uid;
    }

    /**
     * @param uid
     *            the uid to set
     */
    public void setUid(String uid) {
        this.uid = uid;
    }

    public long getColumnId() {
        return columnId;
    }

    public void setColumnId(long columnId) {
        this.columnId = columnId;
    }

    /**
     * @return the position
     */
    public int getPosition() {
        return position;
    }

    /**
     * @param position
     *            the position to set
     */
    public void setPosition(int position) {
        this.position = position;
    }

    /**
     * @return the isAddFirstItem
     */
    public boolean isIgnoreFirstItem() {
        return isIgnoreFirstItem;
    }

    /**
     * @param isAddFirstItem
     *            the isAddFirstItem to set
     */
    public void setIgnoreFirstItem(boolean isAddFirstItem) {
        this.isIgnoreFirstItem = isAddFirstItem;
    }

    /**
     * @return the channeled
     */
    public String getChanneled() {
        return channeled;
    }

    /**
     * @param channeled
     *            the channeled to set
     */
    public void setChanneled(String channeled) {
        this.channeled = channeled;
    }

    /**
     * @return the day
     */
    public String getDay() {
        return day;
    }

    /**
     * @param day
     *            the day to set
     */
    public void setDay(String day) {
        this.day = day;
    }

    public long getVid_nor_265() {
        return vid_nor_265;
    }

    public void setVid_nor_265(long vid_nor_265) {
        this.vid_nor_265 = vid_nor_265;
    }

    public String getUrl_nor_265() {
        return url_nor_265;
    }

    public void setUrl_nor_265(String url_nor_265) {
        this.url_nor_265 = url_nor_265;
    }

    public long getVid_high_265() {
        return vid_high_265;
    }

    public void setVid_high_265(long vid_high_265) {
        this.vid_high_265 = vid_high_265;
    }

    public String getUrl_high_265() {
        return url_high_265;
    }

    public void setUrl_high_265(String url_high_265) {
        this.url_high_265 = url_high_265;
    }

    public long getVid_super_265() {
        return vid_super_265;
    }

    public void setVid_super_265(long vid_super_265) {
        this.vid_super_265 = vid_super_265;
    }

    public String getUrl_super_265() {
        return url_super_265;
    }

    public void setUrl_super_265(String url_super_265) {
        this.url_super_265 = url_super_265;
    }

    public long getVid_original_265() {
        return vid_original_265;
    }

    public void setVid_original_265(long vid_original_265) {
        this.vid_original_265 = vid_original_265;
    }

    public String getUrl_original_265() {
        return url_original_265;
    }

    public void setUrl_original_265(String url_original_265) {
        this.url_original_265 = url_original_265;
    }

    public long getFile_size_nor_265() {
        return file_size_nor_265;
    }

    public void setFile_size_nor_265(long file_size_nor_265) {
        this.file_size_nor_265 = file_size_nor_265;
    }

    public long getFile_size_high_265() {
        return file_size_high_265;
    }

    public void setFile_size_high_265(long file_size_high_265) {
        this.file_size_high_265 = file_size_high_265;
    }

    public long getFile_size_super_265() {
        return file_size_super_265;
    }

    public void setFile_size_super_265(long file_size_super_265) {
        this.file_size_super_265 = file_size_super_265;
    }

    public long getFile_size_original_265() {
        return file_size_original_265;
    }

    public void setFile_size_original_265(long file_size_original_265) {
        this.file_size_original_265 = file_size_original_265;
    }

    @Override
    public Object clone() {
        VideoInfoModel model = null;
        try {
            model = (VideoInfoModel) super.clone();
        } catch (CloneNotSupportedException e) {
            LogUtils.e(TAG, "copy VideoInfoModel break out exception!", e);
        }
        return model;
    }

    public ActionProtocol getAction_protocol() {
        return action_protocol;
    }

    public void setAction_protocol(ActionProtocol action_protocol) {
        this.action_protocol = action_protocol;
    }

    /**
     * @return the shortVideoType
     */
    public int getShortVideoType() {
        return shortVideoType;
    }

    /**
     * @param shortVideoType
     *            the shortVideoType to set
     */
    public void setShortVideoType(int shortVideoType) {
        this.shortVideoType = shortVideoType;
    }

    public String getRecommend_reason() {
        return recommend_reason;
    }

    public void setRecommend_reason(String recommend_reason) {
        this.recommend_reason = recommend_reason;
    }

    public long getTimestamp() {
        return timestamp;
    }

    public boolean isPrevue() {
        return prevue;
    }

    public void setPrevue(boolean prevue) {
        this.prevue = prevue;
    }

    public int is_advert() {
        return is_advert;
    }

    public void setIs_advert(int is_advert) {
        this.is_advert = is_advert;
    }

    public String getHor_w8_pic() {
        return hor_w8_pic;
    }

    public void setHor_w8_pic(String hor_w8_pic) {
        this.hor_w8_pic = hor_w8_pic;
    }

    public String getShow_name() {
        return show_name;
    }

    public void setShow_name(String show_name) {
        this.show_name = show_name;
    }

    public String getVideo_time_length() {
        return video_time_length;
    }

    public void setVideo_time_length(String video_time_length) {
        this.video_time_length = video_time_length;
    }

    @Override
    public String toString() {
        String video = "Name:" + getVideoName() + " , TimeStamp:" + timestamp + " , Vid:" + vid + " , Aid:" + aid
                + " , site:" + site + " , Cid:" + cid + ", Data_Type: " + data_type + "]";
        return video;
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + site;
        result = prime * result + (int) (vid ^ (vid >>> 32));
        return result;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass() && (!(this instanceof VideoInfoModel) || !(obj instanceof VideoInfoModel)))
            return false;
        VideoInfoModel other = (VideoInfoModel) obj;
        if (site != other.site)
            return false;
        if (vid != other.vid)
            return false;
        return true;
    }

    public boolean equalsWithAid(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass() && (!(this instanceof VideoInfoModel) || !(obj instanceof VideoInfoModel)))
            return false;
        VideoInfoModel other = (VideoInfoModel) obj;
        if (site != other.site)
            return false;
        if (vid != other.vid)
            return false;
        if (aid != other.aid) {
            return false;
        }
        return true;
    }

    public boolean equalsIngoreSite(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass() && (!(this instanceof VideoInfoModel) || !(obj instanceof VideoInfoModel)))
            return false;
        VideoInfoModel other = (VideoInfoModel) obj;
        if (vid != other.vid)
            return false;
        return true;
    }

    /**
     * 下载数据因为兼容老版本数据，不判断site
     *
     * @param obj
     * @return
     */
    public boolean equalsExceptSite(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass() && (!(this instanceof VideoInfoModel) || !(obj instanceof VideoInfoModel)))
            return false;
        VideoInfoModel other = (VideoInfoModel) obj;
        if (vid != other.vid)
            return false;
        return true;
    }

    public boolean isDataCorrect() {
        return vid > 0;
    }

    /**
     * 获取视频标题
     *
     * @return
     */
    public String getVideoName() {
        if (StringUtils.isNotBlank(video_first_name)) {
            return video_first_name;
        }
        if (StringUtils.isNotBlank(first_name)) {
            return first_name;
        }
        return video_name;
    }

    public String getSharePic() {
        String pic = getHor_big_pic();
        if (StringUtils.isEmpty(pic)) {
            pic = getHor_high_pic();
        }
        if (StringUtils.isEmpty(pic)) {
            pic = getVer_big_pic();
        }
        if (StringUtils.isEmpty(pic)) {
            pic = getVer_high_pic();
        }
        if (StringUtils.isEmpty(pic)) {
            pic = getVer_small_pic();
        }
        return pic;
    }

    /**
     * @return the album_desc
     */
    public String getAlbum_desc() {
        return album_desc;
    }

    /**
     * @param album_desc
     *            the album_desc to set
     */
    public void setAlbum_desc(String album_desc) {
        this.album_desc = album_desc;
    }

    /**
     * 是否含有基础信息
     *
     * @return
     */
    public boolean containBaseInfo() {
        // 视频标题,播放地址
        String videoName = getVideoName();
        if (IDTools.isNotEmpty(vid)
                && StringUtils.isNotBlank(videoName)
                && (StringUtils.isNotBlank(url_nor) || StringUtils.isNotBlank(url_high) || StringUtils
                        .isNotBlank(url_super))) {
            return true;
        }
        return false;
    }

    public ArrayList<String> getHigh_light() {
        return high_light;
    }

    public void setHigh_light(ArrayList<String> high_light) {
        this.high_light = high_light;
    }

    public String getAlbumName() {
        if (StringUtils.isBlank(album_sub_name)) {
            return album_name;
        } else {
            return album_sub_name;
        }
    }

    public String getVer_common_pic() {
        return ver_common_pic;
    }

    public void setVer_common_pic(String ver_common_pic) {
        this.ver_common_pic = ver_common_pic;
    }

    public String getHor_common_pic() {
        return hor_common_pic;
    }

    public void setHor_common_pic(String hor_common_pic) {
        this.hor_common_pic = hor_common_pic;
    }

    public String getAlbum_hor_high_pic() {
        return album_hor_high_pic;
    }

    public void setAlbum_hor_high_pic(String album_hor_high_pic) {
        this.album_hor_high_pic = album_hor_high_pic;
    }

    public String getAlbum_hor_big_pic() {
        return album_hor_big_pic;
    }

    public void setAlbum_hor_big_pic(String album_hor_big_pic) {
        this.album_hor_big_pic = album_hor_big_pic;
    }

    public String getAlbum_hor_small_pic() {
        return album_hor_small_pic;
    }

    public void setAlbum_hor_small_pic(String album_hor_small_pic) {
        this.album_hor_small_pic = album_hor_small_pic;
    }

    public String getHor_w6_pic() {
        return hor_w6_pic;
    }

    public void setHor_w6_pic(String hor_w6_pic) {
        this.hor_w6_pic = hor_w6_pic;
    }

    public String getHor_w16_pic() {
        return hor_w16_pic;
    }

    public void setHor_w16_pic(String hor_w16_pic) {
        this.hor_w16_pic = hor_w16_pic;
    }

    public String getVer_w12_pic() {
        return ver_w12_pic;
    }

    public void setVer_w12_pic(String ver_w12_pic) {
        this.ver_w12_pic = ver_w12_pic;
    }

    public String getFirst_name() {
        return first_name;
    }

    public void setFirst_name(String first_name) {
        this.first_name = first_name;
    }

    public boolean isAlbum() {
        return is_album == 1;
    }

    /**
     * 使用ListResourcesDataType类 获取分类类型
     *
     * @return
     */
    public int getData_type() {
        return data_type;
    }

    public void setData_type(int data_type) {
        this.data_type = data_type;
    }

    public int getOrigin_album_id() {
        return origin_album_id;
    }

    public void setOrigin_album_id(int origin_album_id) {
        this.origin_album_id = origin_album_id;
    }

    public int getCorrelation_num() {
        return correlation_num;
    }

    public void setCorrelation_num(int correlation_num) {
        this.correlation_num = correlation_num;
    }

    /**
     * 是否专辑
     *
     * @return
     */
    public boolean isAlbumType() {
        return (is_album == 1 || ListResourcesDataType.isTypeAlbum(data_type));
    }

    public boolean isVideoType() {
        return ListResourcesDataType.isTypeVideo(data_type);
    }

    /**
     * 是否pgc类型
     *
     * @return
     */
    public boolean isPgcType() {
        return ListResourcesDataType.isSubTypePGC(data_type);
    }

    public boolean isUgcType() {
        return ListResourcesDataType.isSubTypeUGC(data_type);
    }

    /**
     * 是否付费类型
     *
     * @return
     */
    public boolean isPayVipType() {
        return ListResourcesDataType.isSubTypeVIP(data_type);
    }

    /**
     * 是否美剧
     *
     * @return
     */
    public boolean isUSVideoType() {
        return ListResourcesDataType.isSubTypeAmerican(data_type);
    }

    /**
     * 是否单集付费
     *
     * @return
     */
    public boolean isSinglePayType() {
        return ListResourcesDataType.isSinglePayType(data_type);
    }

    public boolean isPgcPayType() {
        return ListResourcesDataType.isSubTypePGCPay(data_type);
    }

    public String getPublish_user_code() {
        return publish_user_code;
    }

    public void setPublish_user_code(String publish_user_code) {
        this.publish_user_code = publish_user_code;
    }

    public String getPublish_user_name() {
        return publish_user_name;
    }

    public void setPublish_user_name(String publish_user_name) {
        this.publish_user_name = publish_user_name;
    }

    /**
     * 视频能否播放,所有播放地址都为空认为不能播放(包括：没有版权，加密视频，私密视频)
     * @return  地址不空返回true
     */
    public boolean canVideoPlay() {
        return StringUtils.isNotBlank(url_nor) || StringUtils.isNotBlank(url_high) || StringUtils.isNotBlank(url_super)
                || StringUtils.isNotBlank(url_original) || StringUtils.isNotBlank(download_url);
    }

    public boolean canVideoPlayEncrypt() {
        return StringUtils.isNotBlank(url_nor_265) || StringUtils.isNotBlank(url_high_265)
                || StringUtils.isNotBlank(url_super_265) || StringUtils.isNotBlank(url_original_265)/* || StringUtils.isNotBlank(download_url)*/;
    }

    public int getTvIsVr() {
        return tvIsVr;
    }

    public void setTvIsVr(int tvIsVr) {
        this.tvIsVr = tvIsVr;
    }

    /**
     * 是否是全景视频
     *
     * @return
     */
    public boolean isVrTypeVideo() {
        if (this.tvIsVr == 1 || this.tvIsVr == 2) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * 获取全景视频的默认模式
     *
     * @return
     */
    public VRPlayerMode getDefaultVrMode() {
        if (this.tvIsVr == 1) {
            return VRPlayerMode.VRSingle360Mode;
        } else if (this.tvIsVr == 2) {
            return VRPlayerMode.VRNomalMode;
        } else {
            return null;
        }
    }

    public enum VRPlayerMode {
        VRSingle360Mode,
        VRDouble360Mode,
        VRNomalMode;

        private VRPlayerMode() {
        }
    }

    public String getVr_type_text() {
        return vr_type_text;
    }

    public void setVr_type_text(String vr_type_text) {
        this.vr_type_text = vr_type_text;
    }

    public String getWhole_source() {
        return whole_source;
    }

    public void setWhole_source(String whole_source) {
        this.whole_source = whole_source;
    }

    public String getGif_pic() {
        return gif_pic;
    }

    public void setGif_pic(String gif_pic) {
        this.gif_pic = gif_pic;
    }

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeLong(this.vid);
        dest.writeInt(this.is_download);
        dest.writeInt(this.ip_limit);
        dest.writeInt(this.mobileLimit);
        dest.writeInt(this.video_length_type);
        dest.writeInt(this.video_type);
        dest.writeString(this.video_big_pic);
        dest.writeString(this.ver_big_pic);
        dest.writeString(this.hor_big_pic);
        dest.writeString(this.ver_high_pic);
        dest.writeString(this.hor_high_pic);
        dest.writeString(this.small_pic);
        dest.writeString(this.ver_small_pic);
        dest.writeString(this.tip);
        dest.writeString(this.video_desc);
        dest.writeString(this.video_name);
        dest.writeString(this.video_sub_name);
        dest.writeString(this.keyword);
        dest.writeString(this.album_name);
        dest.writeInt(this.is_original_code);
        dest.writeString(this.url_html5);
        dest.writeInt(this.plevel);
        dest.writeLong(this.cid);
        dest.writeString(this.cate_code);
        dest.writeString(this.second_cate_name);
        dest.writeString(this.year);
        dest.writeFloat(this.score);
        dest.writeLong(this.play_count);
        dest.writeString(this.director);
        dest.writeString(this.main_actor);
        dest.writeString(this.area);
        dest.writeLong(this.area_id);
        dest.writeString(this.livePic);
        dest.writeString(this.liveDesc);
        dest.writeInt(this.tvIsVr);
        dest.writeInt(this.vr_type);
        dest.writeString(this.vr_type_text);
        dest.writeLong(this.aid);
        dest.writeString(this.publish_time);
        dest.writeLong(this.video_order);
        dest.writeLong(this.latest_video_count);
        dest.writeLong(this.total_video_count);
        dest.writeString(this.download_url);
        dest.writeLong(this.file_size_mobile);
        dest.writeLong(this.vid_nor);
        dest.writeString(this.url_nor);
        dest.writeString(this.url_nor_mp4);
        dest.writeLong(this.file_size_nor);
        dest.writeString(this.clips_bytes_nor);
        dest.writeString(this.clips_duration_nor);
        dest.writeLong(this.vid_nor_265);
        dest.writeString(this.url_nor_265);
        dest.writeLong(this.file_size_nor_265);
        dest.writeLong(this.vid_high);
        dest.writeString(this.url_high);
        dest.writeString(this.url_high_mp4);
        dest.writeLong(this.file_size_high);
        dest.writeString(this.clips_bytes_high);
        dest.writeString(this.clips_duration_high);
        dest.writeLong(this.vid_high_265);
        dest.writeString(this.url_high_265);
        dest.writeLong(this.file_size_high_265);
        dest.writeLong(this.vid_super);
        dest.writeString(this.url_super);
        dest.writeString(this.url_super_mp4);
        dest.writeLong(this.file_size_super);
        dest.writeString(this.clips_bytes_super);
        dest.writeString(this.clips_duration_super);
        dest.writeLong(this.vid_super_265);
        dest.writeString(this.url_super_265);
        dest.writeLong(this.file_size_super_265);
        dest.writeLong(this.vid_original);
        dest.writeString(this.url_original);
        dest.writeString(this.url_original_mp4);
        dest.writeLong(this.file_size_original);
        dest.writeString(this.clips_bytes_original);
        dest.writeString(this.clips_duration_original);
        dest.writeLong(this.vid_original_265);
        dest.writeString(this.url_original_265);
        dest.writeLong(this.file_size_original_265);
        dest.writeLong(this.vid_nor_NS);
        dest.writeString(this.url_nor_NS);
        dest.writeLong(this.file_size_nor_NS);
        dest.writeLong(this.vid_high_NS);
        dest.writeString(this.url_high_NS);
        dest.writeLong(this.file_size_high_NS);
        dest.writeLong(this.vid_super_NS);
        dest.writeString(this.url_super_NS);
        dest.writeLong(this.file_size_super_NS);
        dest.writeLong(this.vid_original_NS);
        dest.writeString(this.url_original_NS);
        dest.writeLong(this.file_size_original_NS);
        dest.writeLong(this.vid_nor_265_NS);
        dest.writeString(this.url_nor_265_NS);
        dest.writeLong(this.file_size_nor_265_NS);
        dest.writeLong(this.vid_high_265_NS);
        dest.writeString(this.url_high_265_NS);
        dest.writeLong(this.file_size_high_265_NS);
        dest.writeLong(this.vid_super_265_NS);
        dest.writeString(this.url_super_265_NS);
        dest.writeLong(this.file_size_super_265_NS);
        dest.writeLong(this.vid_original_265_NS);
        dest.writeString(this.url_original_265_NS);
        dest.writeLong(this.file_size_original_265_NS);
        dest.writeString(this.caption_eng);
        dest.writeString(this.caption_chs_eng);
        dest.writeFloat(this.total_duration);
        dest.writeInt(this.time_length);
        dest.writeInt(this.start_time);
        dest.writeInt(this.end_time);
        dest.writeString(this.period);
        dest.writeString(this.first_name);
        dest.writeString(this.video_first_name);
        dest.writeString(this.video_short_name);
        dest.writeString(this.show_date);
        dest.writeInt(this.site);
        dest.writeTypedList(this.ep);
        dest.writeParcelable(this.albumInfo, flags);
        dest.writeLong(this.program_id);
        dest.writeString(this.program_name);
        dest.writeLong(this.priority);
        dest.writeLong(this.status);
        dest.writeInt(this.is_album);
        dest.writeString(this.album_sub_name);
        dest.writeString(this.label);
        dest.writeString(this.tv_desc);
        dest.writeInt(this.play_time);
        dest.writeString(this.album_english_name);
        dest.writeString(this.season);
        dest.writeInt(this.has_followed);
        dest.writeString(this.tv_name);
        dest.writeParcelable(this.action_protocol, flags);
        dest.writeInt(this.is_trailer);
        dest.writeLong(this.tv_id);
        dest.writeInt(this.is_complete);
        dest.writeString(this.last_watch_time);
        dest.writeInt(this.push_status);
        dest.writeInt(this.show_status);
        dest.writeString(this.sort);
        dest.writeString(this.title);
        dest.writeString(this.uid);
        dest.writeInt(this.position);
        dest.writeLong(this.columnId);
        dest.writeString(this.action_url);
        dest.writeLong(this.sid);
        dest.writeString(this.channeled);
        dest.writeInt(this.videoLevel);
        dest.writeByte(this.isIgnoreFirstItem ? (byte) 1 : (byte) 0);
        dest.writeInt(this.shortVideoType);
        dest.writeString(this.day);
        dest.writeString(this.recommend_reason);
        dest.writeLong(this.timestamp);
        dest.writeString(this.album_desc);
        dest.writeStringList(this.high_light);
        dest.writeString(this.ver_common_pic);
        dest.writeString(this.hor_common_pic);
        dest.writeString(this.hor_w6_pic);
        dest.writeString(this.hor_w16_pic);
        dest.writeString(this.ver_w12_pic);
        dest.writeInt(this.data_type);
        dest.writeInt(this.origin_album_id);
        dest.writeString(this.album_hor_high_pic);
        dest.writeString(this.album_hor_big_pic);
        dest.writeString(this.album_hor_small_pic);
        dest.writeInt(this.correlation_num);
        dest.writeByte(this.prevue ? (byte) 1 : (byte) 0);
        dest.writeString(this.hor_w8_pic);
        dest.writeInt(this.is_advert);
        dest.writeString(this.show_name);
        dest.writeLong(this.create_date);
        dest.writeInt(this.is_act);
        dest.writeByte(this.shouldLoadHistory ? (byte) 1 : (byte) 0);
        dest.writeString(this.publish_user_code);
        dest.writeString(this.publish_user_name);
        dest.writeString(this.video_time_length);
        dest.writeByte(this.valid ? (byte) 1 : (byte) 0);
        dest.writeString(this.whole_source);
        dest.writeParcelable(this.user, flags);
        dest.writeString(this.gif_pic);
        dest.writeInt(isai);
    }

    protected VideoInfoModel(Parcel in) {
        this.vid = in.readLong();
        this.is_download = in.readInt();
        this.ip_limit = in.readInt();
        this.mobileLimit = in.readInt();
        this.video_length_type = in.readInt();
        this.video_type = in.readInt();
        this.video_big_pic = in.readString();
        this.ver_big_pic = in.readString();
        this.hor_big_pic = in.readString();
        this.ver_high_pic = in.readString();
        this.hor_high_pic = in.readString();
        this.small_pic = in.readString();
        this.ver_small_pic = in.readString();
        this.tip = in.readString();
        this.video_desc = in.readString();
        this.video_name = in.readString();
        this.video_sub_name = in.readString();
        this.keyword = in.readString();
        this.album_name = in.readString();
        this.is_original_code = in.readInt();
        this.url_html5 = in.readString();
        this.plevel = in.readInt();
        this.cid = in.readLong();
        this.cate_code = in.readString();
        this.second_cate_name = in.readString();
        this.year = in.readString();
        this.score = in.readFloat();
        this.play_count = in.readLong();
        this.director = in.readString();
        this.main_actor = in.readString();
        this.area = in.readString();
        this.area_id = in.readLong();
        this.livePic = in.readString();
        this.liveDesc = in.readString();
        this.tvIsVr = in.readInt();
        this.vr_type = in.readInt();
        this.vr_type_text = in.readString();
        this.aid = in.readLong();
        this.publish_time = in.readString();
        this.video_order = in.readLong();
        this.latest_video_count = in.readLong();
        this.total_video_count = in.readLong();
        this.download_url = in.readString();
        this.file_size_mobile = in.readLong();
        this.vid_nor = in.readLong();
        this.url_nor = in.readString();
        this.url_nor_mp4 = in.readString();
        this.file_size_nor = in.readLong();
        this.clips_bytes_nor = in.readString();
        this.clips_duration_nor = in.readString();
        this.vid_nor_265 = in.readLong();
        this.url_nor_265 = in.readString();
        this.file_size_nor_265 = in.readLong();
        this.vid_high = in.readLong();
        this.url_high = in.readString();
        this.url_high_mp4 = in.readString();
        this.file_size_high = in.readLong();
        this.clips_bytes_high = in.readString();
        this.clips_duration_high = in.readString();
        this.vid_high_265 = in.readLong();
        this.url_high_265 = in.readString();
        this.file_size_high_265 = in.readLong();
        this.vid_super = in.readLong();
        this.url_super = in.readString();
        this.url_super_mp4 = in.readString();
        this.file_size_super = in.readLong();
        this.clips_bytes_super = in.readString();
        this.clips_duration_super = in.readString();
        this.vid_super_265 = in.readLong();
        this.url_super_265 = in.readString();
        this.file_size_super_265 = in.readLong();
        this.vid_original = in.readLong();
        this.url_original = in.readString();
        this.url_original_mp4 = in.readString();
        this.file_size_original = in.readLong();
        this.clips_bytes_original = in.readString();
        this.clips_duration_original = in.readString();
        this.vid_original_265 = in.readLong();
        this.url_original_265 = in.readString();
        this.file_size_original_265 = in.readLong();
        this.vid_nor_NS = in.readLong();
        this.url_nor_NS = in.readString();
        this.file_size_nor_NS = in.readLong();
        this.vid_high_NS = in.readLong();
        this.url_high_NS = in.readString();
        this.file_size_high_NS = in.readLong();
        this.vid_super_NS = in.readLong();
        this.url_super_NS = in.readString();
        this.file_size_super_NS = in.readLong();
        this.vid_original_NS = in.readLong();
        this.url_original_NS = in.readString();
        this.file_size_original_NS = in.readLong();
        this.vid_nor_265_NS = in.readLong();
        this.url_nor_265_NS = in.readString();
        this.file_size_nor_265_NS = in.readLong();
        this.vid_high_265_NS = in.readLong();
        this.url_high_265_NS = in.readString();
        this.file_size_high_265_NS = in.readLong();
        this.vid_super_265_NS = in.readLong();
        this.url_super_265_NS = in.readString();
        this.file_size_super_265_NS = in.readLong();
        this.vid_original_265_NS = in.readLong();
        this.url_original_265_NS = in.readString();
        this.file_size_original_265_NS = in.readLong();
        this.caption_eng = in.readString();
        this.caption_chs_eng = in.readString();
        this.total_duration = in.readFloat();
        this.time_length = in.readInt();
        this.start_time = in.readInt();
        this.end_time = in.readInt();
        this.period = in.readString();
        this.first_name = in.readString();
        this.video_first_name = in.readString();
        this.video_short_name = in.readString();
        this.show_date = in.readString();
        this.site = in.readInt();
        this.ep = in.createTypedArrayList(EP.CREATOR);
        this.albumInfo = in.readParcelable(AlbumInfoModel.class.getClassLoader());
        this.program_id = in.readLong();
        this.program_name = in.readString();
        this.priority = in.readLong();
        this.status = in.readLong();
        this.is_album = in.readInt();
        this.album_sub_name = in.readString();
        this.label = in.readString();
        this.tv_desc = in.readString();
        this.play_time = in.readInt();
        this.album_english_name = in.readString();
        this.season = in.readString();
        this.has_followed = in.readInt();
        this.tv_name = in.readString();
        this.action_protocol = in.readParcelable(ActionProtocol.class.getClassLoader());
        this.is_trailer = in.readInt();
        this.tv_id = in.readLong();
        this.is_complete = in.readInt();
        this.last_watch_time = in.readString();
        this.push_status = in.readInt();
        this.show_status = in.readInt();
        this.sort = in.readString();
        this.title = in.readString();
        this.uid = in.readString();
        this.position = in.readInt();
        this.columnId = in.readLong();
        this.action_url = in.readString();
        this.sid = in.readLong();
        this.channeled = in.readString();
        this.videoLevel = in.readInt();
        this.isIgnoreFirstItem = in.readByte() != 0;
        this.shortVideoType = in.readInt();
        this.day = in.readString();
        this.recommend_reason = in.readString();
        this.timestamp = in.readLong();
        this.album_desc = in.readString();
        this.high_light = in.createStringArrayList();
        this.ver_common_pic = in.readString();
        this.hor_common_pic = in.readString();
        this.hor_w6_pic = in.readString();
        this.hor_w16_pic = in.readString();
        this.ver_w12_pic = in.readString();
        this.data_type = in.readInt();
        this.origin_album_id = in.readInt();
        this.album_hor_high_pic = in.readString();
        this.album_hor_big_pic = in.readString();
        this.album_hor_small_pic = in.readString();
        this.correlation_num = in.readInt();
        this.prevue = in.readByte() != 0;
        this.hor_w8_pic = in.readString();
        this.is_advert = in.readInt();
        this.show_name = in.readString();
        this.create_date = in.readLong();
        this.is_act = in.readInt();
        this.shouldLoadHistory = in.readByte() != 0;
        this.publish_user_code = in.readString();
        this.publish_user_name = in.readString();
        this.video_time_length = in.readString();
        this.valid = in.readByte() != 0;
        this.whole_source = in.readString();
        this.user = in.readParcelable(PgcAccountInfoModel.class.getClassLoader());
        this.gif_pic = in.readString();
        this.isai = in.readInt();
    }

    public static final Creator<VideoInfoModel> CREATOR = new Creator<VideoInfoModel>() {
        @Override
        public VideoInfoModel createFromParcel(Parcel source) {
            return new VideoInfoModel(source);
        }

        @Override
        public VideoInfoModel[] newArray(int size) {
            return new VideoInfoModel[size];
        }
    };
}
